A technique known as "chunking" has been used in the field of three-dimensional (3-D) computer graphics to improve the performance of graphics subsystems. In chunking, a complete display is divided into a number of portions, called "chunks", and the display is rendered one chunk at a time. A chunk may be, for example, a 32-by-32 pixel portion of the display. An advantage of chunking is that a chunk is generally small enough to be stored on chip (i.e., on the graphics accelerator/controller). Also, chunking reduces the bus bandwidth requirements between the video memory and the rasterizer, which is the primary bottleneck in most conventional 3-D graphics subsystems. However, chunking generally achieves these benefits at the expense of increased host-to-controller data traffic and increased video memory requirements for geometry data.
Graphics data is generally represented using sets of primitives, such as polygons and/or lines. A triangle is a commonly used primitive, for example. Each triangle has a "span", which can be defined as the set of chunks overlapped by the triangle's bounding rectangle. Traditional chunking approaches allocate a bin (of triangles) for each chunk of the display. Consequently, a triangle to be rendered is assigned to each bin that corresponds to a chunk in the triangle's span. Thus, if a triangle's span includes five chunks, for example, the triangle is assigned to the bins corresponding to each of those five chunks. The host then directs the graphics controller to process the associated bin for each chunk. The problem with this approach is that the host must deliver a triangle to the graphics controller once for each chunk in the triangle's span. Thus, if a triangle's span includes N chunks, the host must deliver that triangle to the graphics controller N times. In addition, the triangle data must be replicated in video memory N times, once in each of the N bins
Therefore, it is desirable to have a 3-D computer graphics technique which not only reduces video memory requirements and video memory-to-rasterizer bandwidth requirements, but also reduces bandwidth requirements between the host and the graphics controller. It is further desirable to have such a technique which can be implemented without requiring changes to existing hardware. Such a technique would enable the delivery of a greater number of triangles to the graphics controller for a given bandwidth and, therefore, the creation of greater realism for the user in graphics applications.